package com.dongdong.service.impl;

import cn.hutool.core.util.StrUtil;
import com.dongdong.mapper.TbTypeTemplateMapper;
import com.dongdong.model.TbSpecificationExample;
import com.dongdong.model.TbTypeTemplate;
import com.dongdong.model.TbTypeTemplateExample;
import com.dongdong.result.PageBean;
import com.dongdong.result.PageResult;
import com.dongdong.service.TypeTemplateService;
import com.dongdong.vo.TypeTemplateVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

@Service
public class TypeTemplateServiceImpl implements TypeTemplateService {

    @Autowired
    private TbTypeTemplateMapper typeTemplateMapper;


    @Override
    public PageResult<TypeTemplateVO> findTypeTemplatePage(PageBean<TypeTemplateVO> pageBean) {
        TbTypeTemplateExample example = new TbTypeTemplateExample();
        TbTypeTemplateExample. Criteria criteria = example.createCriteria();
        if(!StrUtil.isEmpty(pageBean.getBean().getName())){
            criteria. andNameLike("%"+pageBean.getBean().getName()+"%");
        }
        //分页
        PageHelper.startPage(pageBean.getPageNumber(),pageBean.getPageSize());
        //查询
        List<TbTypeTemplate> tbTypeTemplates = typeTemplateMapper.selectByExample(example);
        //创建pageInfo
        PageInfo<TbTypeTemplate> info = new PageInfo<>(tbTypeTemplates);
        //转换
        List<TypeTemplateVO> vos = info.getList().stream().map((x) -> {
            TypeTemplateVO vo = new TypeTemplateVO();
            BeanUtils.copyProperties(x, vo);
            return vo;
        }).collect(Collectors.toList());

        return new PageResult<>(info.getPageNum(), info.getPageSize(),info.getTotal(),vos );
    }

    //增加
    @Override
    public void insert(TypeTemplateVO typeTemplateVO) {
        TbTypeTemplate tbTypeTemplate = new TbTypeTemplate();
        BeanUtils.copyProperties(typeTemplateVO,tbTypeTemplate);

        typeTemplateMapper.insertSelective(tbTypeTemplate);
    }



    //回显
    @Override
    public TypeTemplateVO selectbyid(Long id) {

        TbTypeTemplate tbTypeTemplate = typeTemplateMapper.selectByPrimaryKey(id);

        TypeTemplateVO vo = new TypeTemplateVO();
        BeanUtils.copyProperties(tbTypeTemplate,vo);
        return vo;
    }

    @Override
    public void update(TypeTemplateVO typeTemplateVO) {

        TbTypeTemplate tbTypeTemplate = new TbTypeTemplate();
        BeanUtils.copyProperties(typeTemplateVO,tbTypeTemplate);

        typeTemplateMapper.updateByPrimaryKeySelective(tbTypeTemplate);
    }
//删除
    @Override
    public void deletebyid(Long id) {
        typeTemplateMapper.deleteByPrimaryKey(id);
    }
//批删
    @Override

    public int deletebyids(Integer[] ids) {
        TbTypeTemplateExample tre = new TbTypeTemplateExample();

        List<Integer> list = Arrays.asList(ids);
        List<Long> list2 = new ArrayList<>();

        for (Integer i : list) {
            int i1 = i.intValue();
            list2.add(Long.valueOf(i1));
        }

        tre.createCriteria().andIdIn(list2);
        int i = typeTemplateMapper.deleteByExample(tre);

        return i;

    }

    @Override
    public TypeTemplateVO selectTypeTemplateById(Long id) {
        TbTypeTemplate tbTypeTemplate = typeTemplateMapper.selectByPrimaryKey(id);
        TypeTemplateVO typeTemplateVO = new TypeTemplateVO();
        BeanUtils. copyProperties(tbTypeTemplate, typeTemplateVO);
        return typeTemplateVO;
    }

}
